Network coding is a technique that may be used in a wireless or wired network to improve the information flow of the network. In a conventional network, a node acting as a relay node will typically forward packets (or messages) in the network by re-transmitting the packets in the form that they were received. In a network that uses network coding, on the other hand, relay nodes may combine a number of received packets together into a coded packet before forwarding the coded packet in the network. A node in the network that receives the coded packet may then store the coded packet for eventual decoding. Random linear network coding (RLNC) is a form of network coding that uses randomly generated coefficients to form linear combinations of packets to be forwarded in a network. RLNC has been shown to be a powerful technique for achieving robust, high throughput multi-cast packet distribution in certain network environments. However, RLNC can require some nodes in a network to maintain a considerable amount of data in a local memory to support coding operations. In many instances a node may be called upon to store every packet it has received. In addition, as the amount of packet data stored in a node increases, the computational complexity of the coding operation may increase by a proportional amount. There is a general need for techniques that are capable of reducing the memory requirements and/or computational complexity of implementing RLNC and/or other forms of network coding in arbitrary networks.